МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра БІТ
Практична робота № 2
Симетричний алгоритм блокового шифрування AES
з навчальної дисципліни: “Прикладна криптологія”
Львів – 2011
Завдання
Написати програму, яка здійснює шифрування і розшифрування тексту за допомогою блокового шифру AES
Теоретичний вступ
Advanced Encryption Standard (AES), також відомий під назвою Rijndael - симетричний алгоритм блочного шифрування (розмір блока 128 біт, ключ 128/192/256 біт), фіналіст конкурсу AES і прийнятий в якості американского стандарту шифрування урядом США. Вибір припав на AES з розрахуванням на широке використання і активний аналіз алгоритму, як це було із його попередником, DES. Державний інститут стандартів і технологій (англ. National Institute of Standards and Technology, NIST) США опублікував попередню специфікацію AES 26 жовтня 2001 року, після п'ятилітньої підготовки. 26 травня 2002 року AES оголошено стандартом шифрування. Станом на 2006 рік AES є одним із найпоширеніших алгоритмів симетричного шифрування.
Потреба у новому стандарті шифрування постала у середині 90-х років. Наявний тоді стандарт DES, довжиною ключа 56 біт, дозволяв застосувати метод грубої сили для дешифрування даних. Успішні злами даних стались уже в кінці 90-х. Крім того архітектура DES орієнтувалась на апаратну реалізацію, а програмна реалізація на платформах із обмеженими ресурсами не давала необхідної швидкості застосування. Модифікація DES 3- DES мала достатню довжину ключа, але при цьому була ще повільнішою.
12 жовтня 1997 р. NIST оголосила конкурс на обрання спадкоємця для DES, що був американським стандартом ще з 1977 року. Перед претендентами поставили такі основні вимоги:
• блочний шифр
• довжина блоку 128 біт
• ключі довжиною 128, 192 і 256 біт.
Вибір алгоритму проходив у три етапи. 20 серпня 1998 року на 1-й конференції AES було оголошено список з 15 кандидатів. В серпні 1999 року на 2-й конференції AES список скоротився до п'яти фіналістів: MARS, RC6, Rijndael, Serpent и Twofish. За результатами доповідей 3-ї конференції, що проходила у Нью Йорку 13-14 квітня 2000 року, 2 жовтня 2000 алгоритм, запропонований бельгійськими криптографами Д. Деймоном та В. Ріджменом, був оголошений переможцем конкурсу і почалась процедура стандартизації[1]. 26 травня 2002 року AES був прийнятий як стандарт.
Текст програми
<?php
echo '
<html>
<head>
<meta charset="utf-8">
<title>AES</title>
<link rel="stylesheet" type="text/css" title="default" media="screen" href="main.css">
<script type="text/javascript" src="parse.js"></script>
</head>
<body onload="check();">
<div class="workfield" id="workfield">
<form name="io" method="post">
<input style="float:left" type="text" id="phrase" name="inputPhrase" value="'.$_COOKIE['text'].'">
<input style="float:left" type="text" id="key" name="key" maxlength="42" value="'.$_COOKIE['key'].'">
<input type="hidden" id="tmp" value="" />
<center>
<input type="radio" name="keyLength" value="128" /> 128
<input type="radio" name="keyLength" value="192" /> 192
<input type="radio" name="keyLength" value="256" checked="true"/> 256
</center>
<input type="submit" name="button" value="Rjindael" class="button" onclick="temp.php">
</form>
';
echo '<div id="output" class="output">';
$text = $_POST['inputPhrase'];
$password = $_POST['key'];
$blocksize = $_POST['keyLength']; // can be 128, 192, 256;
setcookie('text', $text, time() + 3600*24*7);
setcookie('key', $password, time() + 3600*24*7);
setcookie('blocksize', $blocksize, time() + 3600*24*7);
echo 'text = '.$text;
echo "<br />block size = $blocksize";
$crypted = AES::encrypt( $text, $password, $blocksize );
echo '<br />crypted = ';AES::array_show($tre = str_split($crypted, 16));
// do something ...
$decrypted = AES::decrypt( $crypted, $password, $blocksize );
echo '<br />decrypted = '.$decrypted;
/* aes.php Copyright © 2005-2008 Chris Veness. Right of free use is granted for all
...